It is often necessary to process different types of input information in the context of computing environments. In recent years, the number and types of input devices available to computer users have increased. Operating systems have typically been configured to accommodate specific input devices. The use of unknown input devices presents new obstacles since applications and operating systems may not understand the new input devices.
Furthermore, in the field of assistive technologies (AT), it is often necessary to allow external components to access input information and collect user interface (UI) information. AT products exist to help computer users who have a need for assistance in areas of learning, communication, and access to information contained in and presented by computer software and have a need for information relevant to the computer interface. These products generally need outside support to gather information about an application's user interface, discover and interrogate UI elements, generate keyboard and pointer input, and to understand what type of behavior or functionality is currently available. Furthermore, current infrastructures are not extensible and therefore require operating system level changes to add new functionality.
Accordingly, a solution is needed that will facilitate the addition of input devices required by third parties without the need for operating system revisions. Additionally, a solution is needed that will make these new devices as functional within the system as built-in devices. The solution should further expose the internal processing of input events so that third parties can intervene and modify processing to suit their needs. Another goal is to accommodate a third party to support devices that are not recognized by allowing them to plug into the input processing mechanism in the same manner that the system does.